<template>
  <view class="custom-input">
    <!-- 输入框和图片都在同一个容器内 -->
    <textarea
      v-model="inputValue"
      :placeholder="placeholder"
      :style="{ height: textAreaHeight + 'px' }"
      class="auto-resize-textarea"
    ></textarea>
    <!-- 显示已上传的图片，回显在输入框下方 -->
    <view class="image-container" v-if="inputValue">
      <image :src="inputValue" class="uploaded-image-preview" />
    </view>
    <view class="upload-button" @tap="openImagePicker">+</view>
  </view>
</template>

<script>
export default {
  props: {
    placeholder: String,
  },
  data() {
    return {
      inputValue: '', // 输入框的文本值或图片 URL
      textAreaHeight: 40, // 输入框的初始高度
    };
  },
  watch: {
    inputValue() {
      // 监听输入内容的变化，根据内容高度调整输入框的高度
      this.adjustTextareaHeight();
    },
  },
  methods: {
    openImagePicker() {
      // 打开图片选择器
      uni.chooseImage({
        count: 1, // 最多选择一张图片
        success: (res) => {
          const tempFilePaths = res.tempFilePaths;
          if (tempFilePaths.length > 0) {
            // 上传图片逻辑
            const imageUrl = tempFilePaths[0];
            // 这里可以使用 uni.uploadFile 或其他文件上传方法
            // 上传成功后，将图片的 URL 赋值给 inputValue
            this.inputValue = imageUrl;
          }
        },
      });
    },
    adjustTextareaHeight() {
      // 根据输入内容的高度调整输入框的高度
      const textarea = this.$refs.textarea;
      if (textarea) {
        textarea.style.height = 'auto'; // 先将高度设为 auto
        textarea.style.height = textarea.scrollHeight + 'px'; // 根据内容高度重新设置高度
        this.textAreaHeight = textarea.scrollHeight; // 更新数据绑定的高度值
      }
    },
  },
};
</script>

<style scoped>
.custom-input {
  display: flex;
  align-items: center;
  flex-direction: column; /* 垂直居中内容 */
}

.auto-resize-textarea {
  width: 100%;
  border: 1px solid #ccc;
  padding: 10px;
  border-radius: 5px;
  resize: none; /* 防止用户手动调整大小 */
  overflow: hidden; /* 隐藏溢出内容 */
  margin-bottom: 10px; /* 输入框下方留出空白 */
}

.image-container {
  text-align: center; /* 图片居中显示 */
}

.uploaded-image-preview {
  max-width: 100%; /* 图片宽度适应容器 */
  max-height: 200px; /* 控制图片高度 */
}

.upload-button {
  width: 40px;
  height: 40px;
  background-color: #007AFF;
  color: #fff;
  text-align: center;
  line-height: 40px;
  border-radius: 50%;
  cursor: pointer;
}
</style>
